package com.sky.service;

import com.sky.dto.CategoryDTO;
import com.sky.dto.CategoryPageQueryDTO;
import com.sky.entity.Category;
import com.sky.result.PageResult;

import java.util.List;

/**
 * @author bairimengchang
 * @version 1.0
 * @project sky-take-out
 * @description 分类管理业务接口
 * @date 2024/08/04 16:37:51
 */
public interface CategoryService {

    /**
     * 新增分类
     * @param categoryDTO 分类数据传输数据模型
     * @return 新增操作是否成功，返回 true 表示成功，false 表示失败
     */
    boolean addCategory(CategoryDTO categoryDTO);

    /**
     * 获取分类列表
     * @param categoryPageQueryDTO 分类分页查询时传递的数据模型
     * @return 包含分类列表的分页结果对象
     */
    PageResult getCategoryList(CategoryPageQueryDTO categoryPageQueryDTO);

    /**
     * 修改分类启用状态
     * @param status 分类启用状态 1改成启用 2改成禁用
     * @param id 要进行修改状态的分类id
     * @return 修改操作是否成功，返回 true 表示成功，false 表示失败
     */
    boolean changeCategoryStatus(Integer status, Long id);

    /**
     * 根据传来的分类信息编辑分类
     * @param categoryDTO 分类数据传输数据模型
     * @return 修改操作是否成功，返回 true 表示成功，false 表示失败
     */
    boolean editCategory(CategoryDTO categoryDTO);

    /**
     * 根据类型查询分类
     * @param type 要查询的类型 1菜品分类 2 套餐分类
     * @return 符合查询类型的分类信息实体
     */
    List<Category> getCategoryListByType(Integer type);

    /**
     * 根据id删除分类
     * @param id 要进行删除操作的分类id
     * @return 删除成功或失败信息
     */
    boolean removeCategoryById(Long id);
}
